/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.perutaxi.cliente;

import com.perutaxi.entidades.eClienteReclamo;
import com.perutaxi.entidades.eClienteServicio;
import com.perutaxi.entidades.eSolicitudReclamo;
import com.perutaxi.negocio.nCliente;
import com.perutaxi.negocio.nClienteReclamo;
import com.perutaxi.negocio.nClienteServicio;
import com.perutaxi.negocio.nSolicitudReclamo;
import com.perutaxi.segu.SessionMBean;
import com.perutaxi.util.GenericMBean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

/**
 *
 * @author PeruTaxi
 */
@ManagedBean
@SessionScoped
public class ReclamoMBean extends GenericMBean implements Serializable {

    private eClienteReclamo clienteReclamo;
    private List<eClienteReclamo> lista;
    private int accion;
    private String titulo;
    private String tituloHistorial;
    private final String url = "/cliente/reclamo/reclamo.xhtml";
    private final String urlLista = "/cliente/reclamo/listaReclamo.xhtml";
    @ManagedProperty(value = "#{sessionMBean}")
    private SessionMBean sessionMBean;
    private eSolicitudReclamo solReclamo;
    private List<eClienteServicio> listaHistorial;
    private eClienteServicio historial;

    public ReclamoMBean() {
    }

    public String iniciar() {
        this.lista = new ArrayList<eClienteReclamo>();

        return this.urlLista;
    }

    public String nuevo() throws Exception {
        this.accion = 1;
        this.titulo = "NUEVO RECLAMO";
        this.solReclamo = nSolicitudReclamo.inicializar();
        this.solReclamo.setCliente(nCliente.obtenerPorIdUser(this.sessionMBean.getSessionUsuario().getId()));

        return this.url;
    }

    public String ver() {
        this.accion = 3;
        this.titulo = "VER RECLAMO";
        
        return this.url;
    }

    public void verHistorial() {
        this.tituloHistorial = "HISTORIAL DE SERVICIOS";

    }
    
    public void verReclamo() {
        try {
            this.clienteReclamo = nClienteReclamo.obtenerPorId(this.clienteReclamo.getId());
        } catch (Exception e) {
            showError(e.getMessage());
        }        
    }

    public String guardar() {
        System.out.println("ENTRANDO A GUARDAR");
        try {
            if (this.accion == 1) {
                Long id = Long.valueOf(nSolicitudReclamo.obtenerTodos().size() + 1);
                this.solReclamo.setId(id);
                if (nSolicitudReclamo.guardar(this.solReclamo)) {
                    this.solReclamo = nSolicitudReclamo.obtenerPorId(this.solReclamo.getId());
                    showMessage("SE HA GUARDADO CORRECTAMENTE");
                    return this.ver();
                } else {
                    showError("ERROR AL MOMENTO DE GUARDAR");
                    return null;
                }
            } else {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    
    public void asignarDatosHistorial() {
        this.solReclamo.setDniTaxista(this.historial.getTaxista().getDni());
        this.solReclamo.setFechaIncidente(this.historial.getFechaServicio());
    }

    public String retroceder() {
        return this.urlLista;
    }

    public List<eClienteReclamo> getLista() throws Exception {
        this.lista = nClienteReclamo.obtenerPorIdCliente(nCliente.obtenerPorIdUser(this.sessionMBean.getSessionUsuario().getId()).getId());
        return lista;
    }

    public void setLista(List<eClienteReclamo> lista) {
        this.lista = lista;
    }

    public eClienteReclamo getClienteReclamo() {
        return clienteReclamo;
    }

    public void setClienteReclamo(eClienteReclamo clienteReclamo) {
        this.clienteReclamo = clienteReclamo;
    }

    public int getAccion() {
        return accion;
    }

    public void setAccion(int accion) {
        this.accion = accion;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public SessionMBean getSessionMBean() {
        return sessionMBean;
    }

    public void setSessionMBean(SessionMBean sessionMBean) {
        this.sessionMBean = sessionMBean;
    }

    public eSolicitudReclamo getSolReclamo() {
        return solReclamo;
    }

    public void setSolReclamo(eSolicitudReclamo solReclamo) {
        this.solReclamo = solReclamo;
    }

    public String getTituloHistorial() {
        return tituloHistorial;
    }

    public void setTituloHistorial(String tituloHistorial) {
        this.tituloHistorial = tituloHistorial;
    }

    public List<eClienteServicio> getListaHistorial() throws Exception {
        return nClienteServicio.obtenerPorIdCliente(nCliente.obtenerPorIdUser(this.sessionMBean.getSessionUsuario().getId()).getId());
    }

    public void setListaHistorial(List<eClienteServicio> listaHistorial) {
        this.listaHistorial = listaHistorial;
    }

    public eClienteServicio getHistorial() {
        return historial;
    }

    public void setHistorial(eClienteServicio historial) {
        this.historial = historial;
    }
}
